import os
import uuid
from PIL import Image
from django.conf import settings


def generate_folder_path(task_id, task_name, release_time):
    """生成文件夹路径"""
    # 清理任务名称
    safe_name = task_name if task_name else 'unnamed'

    # 日期格式化（跨平台解决方案）
    try:
        year_short = release_time.strftime("%y")
        month = release_time.strftime("%m")  # 使用 %m 获取带前导零的月份
        day = release_time.strftime("%d")  # 使用 %d 获取带前导零的日期
        date_part = f"{year_short}{month}{day}"
    except AttributeError:
        raise ValueError("Invalid release_time format")

    # 构建完整路径
    return f"task-{task_id}-{safe_name}-{date_part}"


def task_upload_path(instance, filename):
    """生成文件存储路径"""
    # 获取基础路径
    base_path = instance.imgs_path or instance.generate_folder_path()

    # 生成唯一文件名
    ext = filename.split('.')[-1]
    unique_name = f"{uuid.uuid4().hex[:8]}.{ext}"

    # 组合完整路径
    full_path = os.path.join('', base_path, unique_name)

    # 创建目录（如果不存在）
    os.makedirs(os.path.join(settings.TASK_IMAGES, full_path), exist_ok=True)

    return full_path